找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15681|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    1 ]0 _  W3 k  f) E
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* \( M8 c$ B  k6 c+ x! p2 s( Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ @* a" e9 b) b; n: e+ nusage: himr <address> <value>. sample: himr 0x80040000 0x08 j7 t( O* }2 S/ u9 e. e5 R

1 U& q4 f! k3 D- v
7 K1 u0 a9 @( ?( [- |! D不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. a  Q" x2 B* |9 l" b- j  b
, l, ?+ R2 n+ E+ X9 M& E
补充内容 (2012-3-8 09:42):; P4 {9 q8 c  C7 e* i: b8 h
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% Y: j3 ^  {8 v$ y7 ~8 r% B这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
5 \& i+ k0 V" a( N. e+ M8 U: V2 ^6 K( `  f" s+ n9 L8 b& _
himr <address> <value>. sample: himr 0x80040000 0x0: u( A$ r9 q- j* J+ Y7 x4 M
4 m& `% [, x) _' g# u5 a
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 d5 K% u  c5 N6 j' u- a
himr 0x80040000 0x00
& r3 k+ P+ }9 w$ |! W  u; o# Yhimr 0x80040001 0x11! M: ?% l6 r$ X0 Z6 R8 _
himr 0x80040002 0x22
3 p6 _' k. Z* S" E2 Shimr 0x80040003 0x33
7 `1 v, D) G) E/ s1 Y! ]* uhimr 0x80040004 0x441 k; n6 Z6 r$ u( [7 \
himr 0x80040005 0x558 y8 H* n2 A! R
5 C: e. O0 j: Z9 u
SN也是类似。
; v  `4 @9 a6 N! n- W2 n, h9 q* d' E. Y# j: T! W, m
现在主要是,谁告诉我们MAC和SN的地址?
2 s% ?9 r7 a. a* ]- a0 A
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 H2 Y' d' e9 O+ w$ H4 r& Q3 E
一直想找到运程修改MAC和SN的办法,苦于无解啊
0 w3 f  E4 x* G) L. N: z$ f
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * d, M4 P! J* Z

/ B3 o+ d+ \0 ?3 F& y; ?修改的代码早有了。到今天不会编译。! @( `% C3 I7 I, L, |$ U
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>! @/ S% ^: r1 P, z' C- ?# R" d
  2. #include <malloc.h>
    0 q( {6 u" s7 ~7 B' [
  3. #include <sys/types.h>
    , f6 j& n) Q  P
  4. #include <sys/stat.h>' J* f" l" w% h7 g
  5. #include <sys/ioctl.h>5 V/ T+ g8 j6 g5 u
  6. #include <stdio.h># a( x. g4 M! o* J6 f; z8 @
  7. #include <string.h>
    ' e( j- [1 s( T( b: ]3 k
  8. ) z  x4 @& u/ }  _: u/ |' u# G( I
  9. typedef struct {: e0 V7 T6 ~( V/ \1 g! y- b
  10.         unsigned int        e2prom_cmd_sub_addr;
    . V6 d% H! ?. z5 [
  11.         unsigned int        sub_addr_count;0 {$ [* v0 R) z+ B
  12.         unsigned char*        e2prom_cmd_data;. f" H1 G) c) I! _
  13.         unsigned int        data_count;
    7 x: p% Y# W# [
  14. } e2prom_s_cmd;
    9 Q- n# a1 u: L6 k
  15. ( F0 I5 @: ]% }: a
  16. #define E2PROM_CMD_READ 1/ p5 P  j- |& j7 ~( V
  17. #define E2PROM_CMD_WRITE 2
    0 ?7 r& h% m. M; d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    " Y7 v- ?! m" M
  19. ( e; H9 K: L2 `2 c% l, S  J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)3 V2 f$ w3 v; ^) d3 t
  21. {& ?9 U7 t1 J3 _& t$ K! d7 G7 Y: O
  22.         int fd, ret;: ?* S, d1 ]3 s3 T! r8 F7 Z2 N3 w
  23.         e2prom_s_cmd arg;; E0 n. m* l& o/ q
  24.         unsigned char buf[0x18];
    % w/ {2 X. c. v- g* U2 j3 c

  25. ' J1 @- I* U( P( Q* z4 M
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 K5 H& _& X7 k6 T# ?
  27.         if (fd  < 0) {
    1 j* ~. Z: @( u# P- ]) K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 N8 w( V5 ?. Z3 k$ Z& I. o
  29.                 return -1;6 b& M& d  T/ k, `* G. V! m
  30.         }
    9 ^) R. w7 d* s& _( L  |
  31.         arg.sub_addr_count      = 2;! n% h/ b* G2 y6 q: Z% W
  32.         arg.data_count          = 0x18;6 B5 k9 F) X' G7 ~- `# L
  33.         arg.e2prom_cmd_sub_addr = 0x290;; I+ R6 R6 K8 Y! G
  34.         arg.e2prom_cmd_data     = buf;
    ( S) l% D6 F1 R, F! U5 g8 B2 w
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, V0 j& B2 w8 A1 |9 s7 _# T7 j( Y
  36.         if (ret != 0) {
    4 }- L/ u% B8 P- n) `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);* q: s9 H1 X/ h3 D( W
  38.                 return -1;/ J+ B% r/ ^% o3 _  [; R6 c
  39.         }7 u5 `( M( I1 }6 s; |' q6 R/ ?
  40.         memcpy(mac, buf, 6);
    5 j# B7 U' _, ~( ^, A
  41.         memcpy(stbid, &buf[6], 18);
    " K: A9 J5 T& {" u4 B
  42.         stbid[18] = '\0';1 @% q  x: H( a& n$ g0 y; Z

  43. 9 k( j8 M* p, j" T
  44.         return 0;
      C4 J" v+ ?" ~0 b3 C, l
  45. }' _8 o2 v: A, ?1 a' Z
  46. 6 E- y( s* T. v+ [( v% ^& z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    8 w6 l/ T/ ]. j5 {' b5 L
  48. {
    ; z$ G2 t2 i4 i3 a
  49.         int fd, ret;3 d  s, G6 _' f& k9 l
  50.         e2prom_s_cmd arg;; C6 K; o8 h" i- }3 Q$ ~
  51.         unsigned char buf[0x18];
    9 o1 R: W2 n4 k* e3 a, I
  52. 3 T5 Y% o& `( j8 s# k* I, [/ m
  53.         memcpy(buf, mac, 6);; z1 B- {2 H: x1 i8 s! y9 v
  54.         memcpy(&buf[6], stbid, 18);
    2 ^9 {8 V0 B; z; M! P4 h/ ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);. u1 H& e: ~6 J5 ?# `7 g$ ^: M
  56.         if (fd  < 0) {
    % R1 P$ k8 }- E, D
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 W; K& u. Q+ ~9 X: N, _# U- K
  58.                 return -1;
    & e1 ^& @4 r* h% C* @
  59.         }
    $ z) x" R4 E/ F2 \7 Q! M+ u
  60.         arg.sub_addr_count      = 2;
    : r* I; h# g( t- l4 [/ ?
  61.         arg.data_count          = 0x18;
    - B: j0 y" l- Z
  62.         arg.e2prom_cmd_sub_addr = 0x290;. @: v/ H0 w  K# u" f* P
  63.         arg.e2prom_cmd_data     = buf;
    ) X- {' X/ O. x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);) d8 J7 ^& W+ h
  65.         if (ret != 0) {
    7 B) ~7 a& W0 Z. M4 k) {
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 z: b/ {6 W1 [8 c( d9 Q
  67.                 return -1;
    & h2 ~* {! q5 C, m/ M% W
  68.         }
    ; [: s2 ]6 o. `, A" n/ Q/ \
  69. % ^! o% q! A5 a( o" v! ]! b/ S
  70.         return 0;
    . U- R9 p7 b  k& M  m
  71. }' Z" f" q. y3 u6 ]

  72. - z5 w- G. w8 D# V( T/ o- x1 q3 i
  73. int main()
    2 R, u9 c% ~! H+ y# S# g
  74. {
    6 d* J2 {" p. H( J" c6 [8 k
  75.         char c;/ Y6 R, g. U' G8 ]
  76.         int i, macs[6];
    % y+ k3 ?) I, {7 e- q
  77.         unsigned char mac[6];5 E- x8 u; A, L' B3 ~8 A% {- Y$ t5 J
  78.         unsigned char stbid[256];3 B4 P6 u' E; z' w# s0 u

  79.   k+ o/ s5 Y! `1 k3 Y
  80.         if (readparam(mac, stbid) < 0)
    4 Z; Q: N3 _) \: @2 Y1 N  N6 V
  81.                 return 1;' }2 q7 |1 A5 u7 Z5 w7 N, X4 F
  82. $ s  r/ T( N9 I. M+ y" B: p
  83.         printf("Current parameters: \n");
    2 @0 _6 K7 N7 s; w, P- r
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ ~: U- E7 X6 |5 g
  85.         printf("  STBID: %s\n", stbid);: @$ T# a3 g$ ?/ N+ @& d( Y$ |
  86.         9 I3 A0 K0 z4 I" Q, x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - r6 @" f+ \3 B1 |- {; x  y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {6 k9 g& x9 o/ E* z+ C, U  Q
  89.                 printf("Input MAC error\n");% J9 @: L3 M8 M6 Y* D
  90.                 return 1;
    4 z. K# N0 m6 P/ i! w% Z4 y& ~! F
  91.         }
    : I. x9 {# Q0 J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 \0 p* k& b: E+ o
  93.         printf("\nPlease input new STBID: ");5 d/ L8 I4 v; F) r# `' Z- k
  94.         scanf("%s", stbid);% P+ L$ |' C0 E: Z% f  l" j/ B
  95.         if (strlen(stbid) != 18) {6 S' W  [6 b+ X0 w) j
  96.                 printf("Invalid stbid\n");
    & ?' U; {$ r9 g; F! d
  97.                 return 1;! t4 a! n! i! u
  98.         }" l6 O' t+ S; ^* G" |, @7 W" C
  99.         printf("\nNew parameters: \n");- O  M7 W2 [- v" P7 u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 J! d* Z9 c9 \% E# {& C4 F
  101.         printf("  STBID: %s\n", stbid);
    . D, x% J' Z" ]
  102. : l) O) f) i; R- M
  103.         printf("\nDo you want to change paramemters? (y/N) ");. e( z7 v1 p# u! m5 w
  104.         for (;;) {5 {) g; _8 @4 ^3 T
  105.                 c = getchar();
    , k( h: _7 @8 |; @0 H9 P/ S# q# U4 p
  106.                 if (c == 'y' || c == 'Y')
    # u) I3 z+ L* r- R" V( ?
  107.                         break;
    % D; c! Y: z$ B: t' X" i; t# [
  108.                 if (c == 'n' || c == 'N') {8 k; V) @! Y. G% n
  109.                         printf("\nAborted.\n");6 d4 x+ M3 r- y& g% u4 q$ }
  110.                         return 1;
      N4 b7 E5 t4 T2 q% t
  111.                 }* I0 u+ s, }2 K- z1 Q
  112.         }7 A3 H0 Y6 m- ^, m! D3 Y) v
  113.         if (writeparam(mac, stbid) == 0)
    0 b/ o2 q' L( ^0 X& p  s
  114.                 printf("Parameters changed.\n");
    % E4 j: X- P/ a: [# g( @
  115. ! p5 V- ~, t5 L& f
  116.         return 0;
    ) \0 ?/ b1 S$ g( U+ O
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24 0 T8 B9 u! H% d* O
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
* d. F* T: p7 U$ s3 p) u1 ^6 ^
你用的编译命令行格式是什么?/ A5 ~0 o0 l% I7 f
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-26 03:47 , Processed in 0.030877 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表