查看: 17599|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) `0 v# }2 w9 b( r9 m" R% y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 W1 k5 P! j; N* ^3 u& V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 z; [0 `0 ]% J% W  _
usage: himr <address> <value>. sample: himr 0x80040000 0x00 m6 M, A9 C) C% _  z/ E. G
" u6 s* U  s, |) F) p; S: |
2 v  d" `- W1 v& ]
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* e1 I! l+ Q( ~7 N3 n
. g& {1 z- P4 ^
补充内容 (2012-3-8 09:42):
' r* @1 @& b* f- e+ }http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! H  ?) V* s1 g, Y) R这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
$ j1 e# V* r% \# S% ~2 f
# Z/ m* O$ W3 E0 ?4 v+ Ihimr <address> <value>. sample: himr 0x80040000 0x0. [( J# i( c! D- z
8 D8 G1 c6 f0 W$ ^% v7 P# p
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# c$ [" b' y  b  n4 B
himr 0x80040000 0x00: m/ A; W. R0 J4 D1 D2 i/ B) |
himr 0x80040001 0x11
2 E: C- t" \9 u% mhimr 0x80040002 0x22
! B* K3 N0 P7 s' Ohimr 0x80040003 0x33( w" F0 F* l; S% j5 n2 i
himr 0x80040004 0x44
: Z( e7 y! \# A/ d1 a  nhimr 0x80040005 0x55  X5 k5 c! _) o+ b: c7 a
3 f* f2 [  V) x0 I" e3 _
SN也是类似。
# x1 y; s2 f# L1 r7 ~- |7 T8 i% @) f- J7 r$ v7 t
现在主要是,谁告诉我们MAC和SN的地址?! q; c, {0 A0 z$ d1 o! u$ |
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
2 @$ p  C7 v+ C% b一直想找到运程修改MAC和SN的办法,苦于无解啊
6 c" z1 K. N4 C1 ?' d2 h! x
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : k3 }: m' M/ A6 P! h
' h+ e$ U" x8 l- I* B' I
修改的代码早有了。到今天不会编译。: E% K2 u  C) H
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    * O3 c4 Y1 a  F, X2 j
  2. #include <malloc.h>
    3 f' N9 F: ?4 S
  3. #include <sys/types.h>  g( Z: [: ?" ~/ l) x
  4. #include <sys/stat.h>
    1 y- f" L4 d. Q. b: X" e
  5. #include <sys/ioctl.h>
    1 D! S& ^# {0 [. P. b1 w
  6. #include <stdio.h>
    8 w' j, N9 L  ~% Z5 C
  7. #include <string.h>9 o4 s' ~) j/ h8 o  Q

  8. $ L4 X* M' R  {! D, m: x
  9. typedef struct {  C5 O% S# K) j, ?, J- P
  10.         unsigned int        e2prom_cmd_sub_addr;: K+ V; G  f6 @: b9 k4 _
  11.         unsigned int        sub_addr_count;
    2 c2 r3 B' I, t
  12.         unsigned char*        e2prom_cmd_data;" q% K( z) N# [. I0 k5 l6 a4 \
  13.         unsigned int        data_count;* N* ^, I* m6 f, j
  14. } e2prom_s_cmd;- }- F( B) T; S: @
  15. / ~* b8 }. F# t0 `
  16. #define E2PROM_CMD_READ 1( \0 m( [+ s7 C" Q4 K6 x! Q* E% c
  17. #define E2PROM_CMD_WRITE 2: \3 s3 w- r9 v. e
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 A& G: K1 `" R0 q' N* ]+ v: H3 S

  19. 3 P- U! q& {- Z4 k( d0 I1 o$ Z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    7 t& y" }) B4 Q2 H0 h, b# O
  21. {
    * m0 \. j' t( m/ \' G2 `
  22.         int fd, ret;
      k2 R, {6 G3 @/ i# P
  23.         e2prom_s_cmd arg;
    7 U/ Z9 X, X! D! B2 w2 H
  24.         unsigned char buf[0x18];& J8 s1 v( G% h

  25. ! i/ H8 V! c5 i, Q& n
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    # k6 q# ~! R8 L# C
  27.         if (fd  < 0) {
    " I/ t. v, `( u$ }7 v2 ~
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      C* M) P7 k4 R- d: ]6 v2 w* J
  29.                 return -1;! L8 x% U* S6 m, d
  30.         }
    ; l) u. r( v8 d# D* x
  31.         arg.sub_addr_count      = 2;7 ^! |. ~( ?. e
  32.         arg.data_count          = 0x18;) B4 E5 E" k6 L) g( t2 Y7 `
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , l7 ^3 P/ f8 G( }/ y
  34.         arg.e2prom_cmd_data     = buf;5 x7 @8 z7 {" `0 ^( n% ^
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : t  O: i+ q. V$ v
  36.         if (ret != 0) {
    7 h' S3 ^& V% E& K6 _* f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & F* K8 P1 m2 }# L
  38.                 return -1;
    8 e: i8 P" O& g) ]7 ]
  39.         }
    . U# a1 q4 U( k( _- R6 ^
  40.         memcpy(mac, buf, 6);7 h0 H; f. ]4 I7 H
  41.         memcpy(stbid, &buf[6], 18);* ]  N- H- Z% B; W4 p% g
  42.         stbid[18] = '\0';
    ) o& t& h; \4 ^$ n3 C3 T) x
  43. $ S  d9 B6 J! H+ s$ e" B
  44.         return 0;& Z4 r2 n( Y' Z" e* j
  45. }
    * f" R$ w) _' n& x, P, q$ T

  46. * M- i6 y9 k# L* d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ d! f2 \+ U. e
  48. {
    8 q( [4 G4 p1 V
  49.         int fd, ret;8 S5 R: `# x+ R
  50.         e2prom_s_cmd arg;
    4 l- y' Z  A4 T  I9 B# w+ S. C  P
  51.         unsigned char buf[0x18];
    # O# ?  H6 ?3 i& d+ y  _2 Z$ j
  52. 2 h, V/ c/ S8 I( Q8 w6 `' j( e
  53.         memcpy(buf, mac, 6);
    ' ]+ R$ a  W* T4 s' t. c
  54.         memcpy(&buf[6], stbid, 18);
      h' l4 w  j. I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 `: u5 p9 Q# c8 X  [7 v& _' \, G
  56.         if (fd  < 0) {
    , H5 H0 S8 q& N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / q4 |* z5 U& E
  58.                 return -1;8 C& F/ b) g- {. h
  59.         }
    % w8 p; C- h" D' ^  ]8 I6 g8 @
  60.         arg.sub_addr_count      = 2;& [9 `0 K8 p6 L  c) s: O
  61.         arg.data_count          = 0x18;2 `- y6 ^+ u; m2 q! S% h
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    . g0 t+ C+ U# ]
  63.         arg.e2prom_cmd_data     = buf;
    ' E( a% M! K. U! w* k. ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);3 o' b% R- v0 L( {# ^4 B/ _
  65.         if (ret != 0) {
    , v: W: w5 A: N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    , ~* E6 k5 U3 b2 L
  67.                 return -1;
    . H$ _! {  n/ i$ W% l
  68.         }9 ?  ]( Z2 G0 ]: @

  69. 3 h: M8 S' i5 S- j
  70.         return 0;
    . k+ h7 x% M2 W8 w: U) n% [
  71. }% Z6 N% t6 {7 L& ~( c
  72. * k# Q9 v1 c% B" H2 ^# |
  73. int main()' b7 ]$ t4 x: {3 U8 ~1 n+ o$ F
  74. {
    4 ^6 x# J# e/ W4 t
  75.         char c;  ]3 i( `$ [+ O- X& c
  76.         int i, macs[6];
    7 {0 u8 c/ q2 y& I( O' C* c, y( p6 s/ _; s
  77.         unsigned char mac[6];
    : }- x: g6 ~- A' \8 o0 t
  78.         unsigned char stbid[256];
    4 u( b( b' }5 V9 S

  79. - b9 \: ^) r5 q; I( d& e  ^
  80.         if (readparam(mac, stbid) < 0)* L1 G. W$ \& |* C7 N; m! |- `
  81.                 return 1;
    6 U! J" {* z: E; Z  J

  82. , \$ |4 `. [( Y0 s" d9 ^
  83.         printf("Current parameters: \n");
    2 ]/ \2 x+ ~& h/ X3 f
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- p& j: U2 J: s; _  M
  85.         printf("  STBID: %s\n", stbid);
    & V* j; N% L3 t1 G$ X. I
  86.        
    ! p7 y3 ~* [% K; f* Z3 M0 }
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , i0 [3 z3 N, Q9 y' r" L) n) i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    / K  P8 R$ W' W8 T. |! f6 `
  89.                 printf("Input MAC error\n");
    0 [* j# W6 e* h( ^8 N4 Q2 g5 B$ [
  90.                 return 1;! [: p. m! ~  f2 x# e. n
  91.         }
    7 X. o% s2 d7 d
  92.         for (i=0; i<6; i++)mac[i] = macs[i];/ B; A& E9 C' D: I) U& k
  93.         printf("\nPlease input new STBID: ");% H( {& d0 u$ P# l. S9 a
  94.         scanf("%s", stbid);
    # w5 D  M3 i# N
  95.         if (strlen(stbid) != 18) {8 L6 g! i* z$ R( C9 y3 o
  96.                 printf("Invalid stbid\n");! @# U6 J# n: J1 p& S3 ?
  97.                 return 1;$ V$ n0 Y! C, n2 I
  98.         }1 q5 N8 Q; R/ ~# ^
  99.         printf("\nNew parameters: \n");4 {4 }+ p3 T$ O7 @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; u* r1 R; g5 V3 q# V8 u
  101.         printf("  STBID: %s\n", stbid);1 f. n: `& v* R. x2 c/ U% t
  102. $ ~: ?) A- J& u: V1 u& [
  103.         printf("\nDo you want to change paramemters? (y/N) ");+ z* Z! ~8 F" F% k1 L
  104.         for (;;) {$ A. d6 z) E0 u  p) G
  105.                 c = getchar();
    # f, G; r) L! ^& \: e
  106.                 if (c == 'y' || c == 'Y')/ I" O4 A' _' S+ `
  107.                         break;/ r( D" }1 p9 @) x0 `3 T
  108.                 if (c == 'n' || c == 'N') {' P8 j5 h/ R5 Z9 K
  109.                         printf("\nAborted.\n");
    8 E0 w* [. V. v
  110.                         return 1;
    $ C8 W; q% s" _  V6 t* J0 m
  111.                 }2 l! r" }& |# H4 K$ y2 w
  112.         }
    + I+ ^2 B2 S* u; P* F
  113.         if (writeparam(mac, stbid) == 0)
    ; A# Z7 S/ d3 ?; G$ p
  114.                 printf("Parameters changed.\n");
    & ]# q9 s% v& O: D" X) w

  115. ( H# G4 A$ y6 K& B: _4 ]" k' z% Z
  116.         return 0;
    1 J/ g% w: t2 }( I0 y2 M9 }4 i
  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 2 w+ {$ q, \$ S; M1 i
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
% m- N# k/ I6 [$ E7 c, R6 l
你用的编译命令行格式是什么?
. ]( U+ v4 n, V' p7 F8 U
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部