找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15851|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) h) T3 I, M' y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig' q# e7 `) |: N) \8 K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; e5 z3 A  k& D3 F" A
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  @* ^1 V3 j+ k! n  c/ l2 }  R; V" M* V
; A$ v! x9 p8 R: l# `
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, M+ P. Q( E( I. w9 T) ~
' Y9 _; M& E+ A$ N补充内容 (2012-3-8 09:42):" X( O1 J! J8 c) `: {$ I" F
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
4 V4 g1 \; s6 h# C; t7 r这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。* ]4 I, B) w' c- y' U" O0 q' T

2 P8 S* |% N  ?3 A9 f" }himr <address> <value>. sample: himr 0x80040000 0x0( b6 h. v. o6 h' |$ C* b3 k
) l; d% e( x' B; Q+ s) s2 \
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。6 t/ f* ^7 L4 H
himr 0x80040000 0x007 s6 v8 n: k5 ~! T$ |# U
himr 0x80040001 0x11) n4 P8 s" C1 s2 Q2 R% p
himr 0x80040002 0x22
7 J/ |; [' T: s4 G+ T# V% v) i8 nhimr 0x80040003 0x339 S/ t$ W9 A. E8 W% K
himr 0x80040004 0x440 T( T) Z1 j* s# |2 N
himr 0x80040005 0x55
# E0 v( M% U7 e' W' [& M' m/ r2 {; F7 j
SN也是类似。
# }9 B$ E' Y5 z; z1 W' p7 h1 r' v1 z$ }+ Z" g6 l
现在主要是,谁告诉我们MAC和SN的地址?
8 |7 h- K4 \) `3 N- M6 E. h6 L  G
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 N/ Y) |1 O/ \" r& D一直想找到运程修改MAC和SN的办法,苦于无解啊

! V3 U: v* ]4 @' l/ J5 v# s" j& h源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 X0 q8 J3 k  S& J* `6 y% x2 q5 c3 r$ h  z' n3 A
修改的代码早有了。到今天不会编译。
+ a; X3 O2 P# x3 ^需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, H; N% u2 [, y# P( L! ?# Y
  2. #include <malloc.h>
      O' ^; S7 M- z, z! ?! S
  3. #include <sys/types.h>7 d1 [3 f- A9 ?2 h, a
  4. #include <sys/stat.h>
    ( @  c& i$ \+ e) h
  5. #include <sys/ioctl.h>
    ; t7 m2 \9 }% G1 s/ S& F3 i* o
  6. #include <stdio.h># N* Q7 b" T( X0 S
  7. #include <string.h>
    3 u& P, p" m, b/ \$ k  c, k
  8. : `9 S/ Z, c" S' u8 {4 ?; C9 A
  9. typedef struct {) U6 j8 Z/ }+ W% N, T, N5 @
  10.         unsigned int        e2prom_cmd_sub_addr;5 ^% j/ D& b! j, m
  11.         unsigned int        sub_addr_count;
    6 e; I2 M# ~  g; E" j; d: a
  12.         unsigned char*        e2prom_cmd_data;
    $ u3 _  u) U$ s- B4 p; @* O
  13.         unsigned int        data_count;2 t9 Q5 ?* o1 s) P4 u6 \% t
  14. } e2prom_s_cmd;
    " @1 |: X2 P* x$ {& M6 n- x9 K. ?
  15. 8 s1 O! E/ {+ k# R1 Q5 a
  16. #define E2PROM_CMD_READ 1" c# m' u+ C# Y# @; R# i
  17. #define E2PROM_CMD_WRITE 2
    / t4 W) g6 f) s% \: u. Q' e
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 B3 i1 q0 J9 n5 n: g
  19. : J; u6 u# O  Y- B: A' U% q8 d
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) w, K/ `3 S/ D5 ~- I1 l0 s
  21. {
    : O. `# q% u) g
  22.         int fd, ret;6 ^0 G, y2 [* k; P& t3 `% b
  23.         e2prom_s_cmd arg;
    ( V, s. [& O0 |" \+ o- x8 }
  24.         unsigned char buf[0x18];1 |7 o' J+ v6 Y# E* a6 A2 Q: A
  25. $ a! o; h, O, t0 `; ^* f0 `" t, M
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , |  s+ F- l: o" K( l
  27.         if (fd  < 0) {
    6 Q8 U5 T+ t* n
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 |! k& ^( t) M$ t: }
  29.                 return -1;, a7 Y8 Z/ x& ?) h/ N# X
  30.         }
    & |8 X+ b" Z" m, b& x* p
  31.         arg.sub_addr_count      = 2;
    / ~( B6 I7 \6 E4 g* J5 w7 i  Q
  32.         arg.data_count          = 0x18;
    & X6 Z* I. i2 L/ Z$ E* l. W/ y
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 k' g8 a* u, X& o
  34.         arg.e2prom_cmd_data     = buf;
    , l1 L" G( x7 U! e& s
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 A. B+ y4 z, J, F* C/ K; m
  36.         if (ret != 0) {
    ; }$ A. E9 P9 v0 k( u$ X
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; n1 H' z8 S3 A" v1 ~" E; U
  38.                 return -1;
    9 ^" G% `8 B$ y; S
  39.         }
    0 L) h* V( j) g4 C+ r
  40.         memcpy(mac, buf, 6);: E- W3 Z1 b" Z$ L
  41.         memcpy(stbid, &buf[6], 18);
    4 i8 `5 Y6 V3 u1 e5 f& V. x# n
  42.         stbid[18] = '\0';
    8 X' I0 }# b, R. }) a' X
  43. 7 u4 y1 T' J$ b3 g1 @0 A- E$ K
  44.         return 0;
    ' n3 B$ x4 I4 c  B, x  U  n1 k
  45. }# r8 |7 ^& L: y/ F2 U  q
  46. 6 ]3 I2 X; D# l- W7 \; g; V8 R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    + x6 a+ |& j6 p- z
  48. {
    1 j1 \( Y9 ?5 {5 S9 l8 Z2 s
  49.         int fd, ret;
    ! W! m1 O3 K' w' O0 m% L* c0 {
  50.         e2prom_s_cmd arg;1 I" y, P" z, Z0 s
  51.         unsigned char buf[0x18];' k9 F  B' X5 ^% g4 s
  52. ! u2 G4 [* H; o- y
  53.         memcpy(buf, mac, 6);
    : s) M6 O4 e/ I$ E* ~* B
  54.         memcpy(&buf[6], stbid, 18);8 c( h! f: s# {. P, C* ]( Z! o
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " S. V3 k. E4 U" k% W* P
  56.         if (fd  < 0) {
    1 A& `# R+ L$ y* ?, \% `
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 |/ `4 y' J) r, Y+ E$ k
  58.                 return -1;
    $ f/ v) ?  Y" `  Y) |7 W: b" K
  59.         }/ X8 A* E% Z3 D9 h
  60.         arg.sub_addr_count      = 2;& W: Y- E. W" O- I3 _0 _
  61.         arg.data_count          = 0x18;. c4 S* t7 {& z# D% L5 `( G; C
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    / J7 a! v. f) q
  63.         arg.e2prom_cmd_data     = buf;
      D3 R* A' I& Q  g5 c( }4 l# w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);! c8 P" f" G, D) C  C6 f: H  O
  65.         if (ret != 0) {) G" r% V! D* r, w2 Z1 K8 b
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( i% z/ B; s2 }6 D
  67.                 return -1;
    9 s8 v6 x& ~. v, W% r
  68.         }# n$ l8 S' t. X# W

  69. ; T0 r: H; j* D7 w7 s
  70.         return 0;& {1 N, x, N2 @1 }* [
  71. }5 I. I  C$ `0 E' R! d. Z& X. c

  72. 0 P* ?1 V. `# t0 i
  73. int main()
      J8 U4 ]* ~. u
  74. {2 a7 {% C# S! s; w: G+ B
  75.         char c;8 q8 m6 T/ K8 a' {
  76.         int i, macs[6];
    - l) Y$ O3 a( C( `% N
  77.         unsigned char mac[6];$ B" X) t# A  D4 [* y' r
  78.         unsigned char stbid[256];7 k: U# l# ]) i! C0 B

  79. & q+ K; S) v* {% b2 ^4 D  o* n
  80.         if (readparam(mac, stbid) < 0)
    1 ^5 K+ N4 D0 v; [2 i0 ^
  81.                 return 1;; j2 v2 p, b5 v' p6 E
  82. 5 s; {: t% k" G6 l( l
  83.         printf("Current parameters: \n");
    4 S3 g% u( E  [# O8 I1 y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % A6 ~7 u2 {4 A0 c; D
  85.         printf("  STBID: %s\n", stbid);: z! n; z3 C) _0 m
  86.         " g% P6 w& L% c5 y8 I2 F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ' K( c; u: \2 c$ [- [5 m. ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 p5 R; P8 W5 l2 D
  89.                 printf("Input MAC error\n");
    ! V7 {( N  }" Z4 L) o2 J0 s
  90.                 return 1;1 T# Z. O1 k* U
  91.         }: i. W! c) N) u; Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 R6 j8 e" P1 a" ^: [- ?
  93.         printf("\nPlease input new STBID: ");
    : q6 N- y! t% p- c: a) c. @
  94.         scanf("%s", stbid);
    , I6 n& N3 T# H; s) g8 _5 Z
  95.         if (strlen(stbid) != 18) {) }/ ^* ~+ R" q8 E0 `
  96.                 printf("Invalid stbid\n");3 w  d! K# l9 g
  97.                 return 1;
    2 J$ W) V6 j. Q
  98.         }
    * T4 U- c( Q1 V+ @2 U$ w" |2 R& R) T$ N
  99.         printf("\nNew parameters: \n");1 G* z4 f( L1 `2 B
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; T+ w0 n$ {! R3 @/ L
  101.         printf("  STBID: %s\n", stbid);+ v  ]& g' W5 M; g! ?
  102. + H" Z3 i' q5 ~0 m* W- ^- d; Q0 U
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; \2 T* {/ v( c
  104.         for (;;) {5 i: C. U$ ~* l7 ?/ M5 ^0 h
  105.                 c = getchar();1 T8 W% p3 `; y/ b5 \4 G
  106.                 if (c == 'y' || c == 'Y')
    2 v8 w. A5 C! N8 B
  107.                         break;
    2 z, P/ \* w' S. _# _3 O7 h( E
  108.                 if (c == 'n' || c == 'N') {
    , Y0 l/ W1 l6 O2 j% h+ A
  109.                         printf("\nAborted.\n");
    / ]$ ^0 v8 ?1 D2 s5 L* O+ {; p. ^: o
  110.                         return 1;
    ) [8 [( J) d" F) ~( }9 ~. ^7 }
  111.                 }
    ) b: n$ L( o% ]* b+ x+ K" V' S) R
  112.         }
    ( e" e5 G' B5 J( p: m1 R: j
  113.         if (writeparam(mac, stbid) == 0) " m( @% j8 z' A* @: B
  114.                 printf("Parameters changed.\n");0 s' n$ Z) A4 \5 s' T& V0 V1 F
  115. 7 i' z( m$ K2 z
  116.         return 0;4 S1 ?: N/ E3 v  @) g4 }6 M$ ]( E
  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 : ^: G- `$ P# `- v5 w) l/ \
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: v0 H. H: f) C你用的编译命令行格式是什么?
8 ]2 b: o0 [+ b3 `8 ^# k6 O
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-23 01:57 , Processed in 0.066138 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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